package com.mall.service;

import com.mall.entity.Category;
import java.util.List;

/**
 * 商品分类服务接口
 * 
 * @author Mall Team
 */
public interface CategoryService {
    
    /**
     * 获取分类树
     */
    List<Category> getCategoryTree();
    
    /**
     * 获取启用的分类树
     */
    List<Category> getEnabledCategoryTree();
    
    /**
     * 根据ID获取分类
     */
    Category getCategoryById(Long categoryId);
    
    /**
     * 根据父ID获取子分类
     */
    List<Category> getCategoriesByParentId(Long parentId);
    
    /**
     * 根据级别获取分类
     */
    List<Category> getCategoriesByLevel(Integer level);
    
    /**
     * 创建分类（管理员功能）
     */
    void createCategory(Category category);
    
    /**
     * 更新分类（管理员功能）
     */
    void updateCategory(Category category);
    
    /**
     * 删除分类（管理员功能）
     */
    void deleteCategory(Long categoryId);
    
    /**
     * 批量删除分类（管理员功能）
     */
    void deleteCategories(Long[] categoryIds);
    
    /**
     * 更新分类状态（管理员功能）
     */
    void updateCategoryStatus(Long categoryId, Integer status);
    
    /**
     * 检查分类名称是否存在
     */
    boolean existsByName(String name, Long parentId);
    
    /**
     * 检查是否有子分类
     */
    boolean hasChildren(Long categoryId);
    
    /**
     * 检查分类下是否有商品
     */
    boolean hasProducts(Long categoryId);
}